var win = Ti.UI.currentWindow;
//win.layout = 'vertical';
var data = [];
var tableViewCreated = false;

var IDzavod;
var IDpredavatelj;
var IDpredmet;

var token;
var isStartUp = true;
var isClientOne;

var scrollView = Titanium.UI.createScrollView({	top: 0, showVerticalScrollIndicator:true });
var view = Titanium.UI.createView({ top: 90, layout:'vertical' });
var view1 = Titanium.UI.createView({ top: 0 });

scrollView.add(view1);
scrollView.add(view); 
win.add(scrollView);

//PAGE HEADING
var pageHeading = Ti.UI.createLabel({
	text: 'AIPS napredno',
	color:'#3E3F87',
	font:{
		fontSize:20,
		fontWeight:'bold'
	},
	top:5,
	textAlign: 'center',
	height:'auto'
});

view1.add(pageHeading);

var priljubljeniIzpiti = Ti.UI.createButton({
	title: 'Prikaži priljubljene izpite', 
	top: 40,
	left: 10,
	height: 'auto',
	width: 'auto',
	font: {fontSize:12, fontWeight:'bold'}
});

priljubljeniIzpiti.addEventListener('click', function() {
	view.remove(imeZavodaLabel);
	view.remove(izbiraZavodov);
	view.remove(imePredavateljaLabel);
	view.remove(izbiraPredavateljev);
	view.remove(imePredmetaLabel);
	view.remove(izbiraPredmetov);
	view.remove(tableview);
	view.remove(dodaj);
	view.remove(dodajPriljubljene);
	
	view.add(imePredmetaLabel1);
	view.add(izbiraPredmetov1);
});

view1.add(priljubljeniIzpiti);

var noviIzpiti = Ti.UI.createButton({
	title: 'Išči nove izpite', 
	top: 40,
	right: 10,
	height: 'auto',
	width: 'auto',
	font: {fontSize:12, fontWeight:'bold'}
});

noviIzpiti.addEventListener('click', function() {
	view.remove(imeZavodaLabel);
	view.remove(izbiraZavodov);
	view.remove(imePredavateljaLabel);
	view.remove(izbiraPredavateljev);
	view.remove(imePredmetaLabel);
	view.remove(izbiraPredmetov);
	view.remove(tableview);
	view.remove(dodaj);
	view.remove(dodajPriljubljene);
	view.remove(imePredmetaLabel1);
	view.remove(izbiraPredmetov1);
	
	view.add(imeZavodaLabel);
	view.add(izbiraZavodov);
});

view1.add(noviIzpiti);

// IZBERI ZAVOD LABEL
var imeZavodaLabel = Ti.UI.createLabel({
	text: 'Izberi zavod:',
	font: {fontSize:12, fontWeight:'bold'},
	color: 'black',
	top: 10,
	left: 10,
	height:'auto'
});

// IZBERI PREDAVATELJ LABEL
var imePredavateljaLabel = Ti.UI.createLabel({
	text: 'Izberi predavatelj:',
	font: {fontSize:12, fontWeight:'bold'},
	color: 'black',
	top: 10,
	left: 10,
	height:'auto'
});

// IZBERI PREDMET LABEL
var imePredmetaLabel = Ti.UI.createLabel({
	text: 'Izberi predmet:',
	font: {fontSize:12, fontWeight:'bold'},
	color: 'black',
	top: 10,
	left: 10,
	height:'auto'
});

//ZAVODI DROPDOWN
var izbiraZavodov = Ti.UI.createPicker({
	useSpinner: 'false',
	top: 5,
	left: 8,
	width: '95%'
});

//PREDAVATELJI DROPDOWN
var izbiraPredavateljev = Ti.UI.createPicker({
	useSpinner: 'false',
	top: 5,
	left: 8,
	width: '95%'
});

//PREDMETI DROPDOWN
var izbiraPredmetov = Ti.UI.createPicker({
	useSpinner: 'false',
	top: 5,
	left: 8,
	width: '95%'
});

// IZBERI PREDMET LABEL
var imePredmetaLabel1 = Ti.UI.createLabel({
	text: 'Izberi predmet:',
	font: {fontSize:12, fontWeight:'bold'},
	color: 'black',
	top: 10,
	left: 10,
	height:'auto'
});

//PREDMETI DROPDOWN
var izbiraPredmetov1 = Ti.UI.createPicker({
	useSpinner: 'false',
	top: 5,
	left: 8,
	width: '95%'
});

//DATABASE
Ti.Database.install('AipsDatabase.mysqllite', 'aips');
var db = Ti.Database.open('aips');
var rowsZavodi = db.execute("select ZavodID, Naziv, Koda from zavodi order by Naziv");

while(rowsZavodi.isValidRow()) {
	izbiraZavodov.add(Ti.UI.createPickerRow({title:rowsZavodi.fieldByName("Naziv")  + ', ' + rowsZavodi.fieldByName("Koda"), 
												id:rowsZavodi.fieldByName("ZavodID")}));
  	rowsZavodi.next();
};

rowsZavodi.close();
db.close();

izbiraZavodov.addEventListener('change', function() {
	view.remove(imePredavateljaLabel);
	view.remove(izbiraPredavateljev);
	view.remove(imePredmetaLabel);
	view.remove(izbiraPredmetov);
	view.remove(tableview);
	view.remove(dodaj);
	view.remove(dodajPriljubljene);
	
	//SPRAZNIMO VSEBINO PREDAVATELJEV
	if(izbiraPredavateljev.columns[0]) {
		var _col = izbiraPredavateljev.columns[0];
	    var len = _col.rowCount;
	    for(var x = len-1; x >= 0; x-- ){
	        var _row = _col.rows[x]
	        _col.removeRow(_row);
	    }
   }
	
	IDzavod = izbiraZavodov.getSelectedRow(0).id;
	
	db = Ti.Database.open('aips');
	var rowsZavodSelected = db.execute("select distinct ZaposleniId " + 
									   "from zavodzaposlenpredmet " + 
									   "where ZavodId = " + IDzavod);
	
	var imePredavatelja;
	
	while(rowsZavodSelected.isValidRow()) {
		imePredavatelja = db.execute("select PriimekIme, Naziv " + 
									 "from zaposleni " + 
									 "where ZaposleniID = " + rowsZavodSelected.fieldByName("ZaposleniId") + 
									 " order by PriimekIme");
									   
		izbiraPredavateljev.add(Ti.UI.createPickerRow({title:imePredavatelja.fieldByName("PriimekIme")  + ', ' + imePredavatelja.fieldByName("Naziv"), 
														  id:rowsZavodSelected.fieldByName("ZaposleniId")}));
	  	rowsZavodSelected.next();
	};
	
	rowsZavodSelected.close();
	db.close();
	
	view.add(imePredavateljaLabel);
	view.add(izbiraPredavateljev);
});

izbiraPredavateljev.addEventListener('change', function() {
	view.remove(imePredmetaLabel);
	view.remove(izbiraPredmetov);
	view.remove(tableview);
	view.remove(dodaj);
	view.remove(dodajPriljubljene);
	
	//SPRAZNIMO VSEBINO PREDMETOV
	if(izbiraPredmetov.columns[0]) {
		var _col = izbiraPredmetov.columns[0];
	    var len = _col.rowCount;
	    for(var x = len-1; x >= 0; x-- ){
	        var _row = _col.rows[x]
	        _col.removeRow(_row);
	    }
   }
    
	IDpredavatelj = izbiraPredavateljev.getSelectedRow(0).id;
	
	db = Ti.Database.open('aips');
	var rowsPredavateljSelected = db.execute("select PredmetID " + 
									   "from zavodzaposlenpredmet " + 
									   "where ZavodId = " + IDzavod + 
									   " and ZaposleniId = " + IDpredavatelj);
	
	var imePredmeta;
	
	while(rowsPredavateljSelected.isValidRow()) {
		imePredmeta = db.execute("select NazivPredmeta " + 
									 "from predmeti " + 
									 "where PredmetID = " + rowsPredavateljSelected.fieldByName("PredmetID") + 
									 " order by NazivPredmeta");
									   
		izbiraPredmetov.add(Ti.UI.createPickerRow({title:imePredmeta.fieldByName("NazivPredmeta"), 
													  id:rowsPredavateljSelected.fieldByName("PredmetID")}));
	  	rowsPredavateljSelected.next();
	};
	
	rowsPredavateljSelected.close();
	db.close();
	
	view.add(imePredmetaLabel);
	view.add(izbiraPredmetov);
});

izbiraPredmetov.addEventListener('change', function() {
	view.remove(tableview);
	view.remove(dodaj);
	view.remove(dodajPriljubljene);
	
	isClientOne = true;
	IDpredmet = izbiraPredmetov.getSelectedRow(0).id;
	client.open('GET', 'https://164.8.251.99:9473/services/cir2012/SiNf_aips/getIzpitniRoki?zavodID=' + IDzavod + '&zaposleniID=' + IDpredavatelj + '&predmetID=' + IDpredmet);
	client.send();
});

izbiraPredmetov1.addEventListener('change', function() {
	view.remove(tableview);
	isClientOne = false;

	client.open('GET', 'https://164.8.251.99:9473/services/cir2012/SiNf_aips/getIzpitniRoki?zavodID=' + izbiraPredmetov1.getSelectedRow(0).zavodID + '&zaposleniID=' + izbiraPredmetov1.getSelectedRow(0).predavateljID + '&predmetID=' + izbiraPredmetov1.getSelectedRow(0).predmetID);
	client.send();
});

var dodaj = Ti.UI.createButton({
	title: 'Dodaj v koledar', 
	right: 10,
	height: 'auto',
	width: 'auto',
	font: {fontSize:12, fontWeight:'bold'}
});

dodaj.addEventListener('click', function() {
	if(isStartUp == true)
	{
		sendCal();
		sendCal();
	}
	
	else
	{
		sendCal();		
	}	
});

var dodajPriljubljene = Ti.UI.createButton({
	title: 'Dodaj med priljubljene',
	top: 5,
	right: 10,
	bottom: 20,
	height: 'auto',
	width: 'auto',
	font: {fontSize:12, fontWeight:'bold'}
});

dodajPriljubljene.addEventListener('click', function() {
	if(!contains(vneseniIzpiti, izbiraPredmetov.getSelectedRow(0).title)) 
	{
    	vneseniIzpiti.push({title: izbiraPredmetov.getSelectedRow(0).title,
				    	    zavodID: IDzavod,
				    	    predavateljID: IDpredavatelj,
				    	    predmetID: IDpredmet});
    	
    	izbiraPredmetov1.add(Ti.UI.createPickerRow({title:izbiraPredmetov.getSelectedRow(0).title,
    												zavodID:IDzavod,
    												predavateljID: IDpredavatelj,
    												predmetID: IDpredmet}));
    												
    	Ti.App.Properties.setList('vneseniIzpiti1', vneseniIzpiti);
    	
    	alert("Izpit je bil dodan med priljubljene")
    }
    
    else    
    	alert("Izpit je že med priljubljene")
});

function contains(a, obj) {
    var i = a.length;
    while (i--) {
       if (a[i].title === obj) {
           return true;
       }
    }
    return false;
}

var vneseniIzpiti = [];
var vneseniIzpiti = Ti.App.Properties.getList("vneseniIzpiti1");
	
if(vneseniIzpiti == null) 
{
	vneseniIzpiti = [];
}

for(i = 0; i < vneseniIzpiti.length; i++) 
{
	izbiraPredmetov1.add(Ti.UI.createPickerRow({title:vneseniIzpiti[i].title,
											   zavodID:vneseniIzpiti[i].zavodID,
											   predavateljID:vneseniIzpiti[i].predavateljID,
											   predmetID:vneseniIzpiti[i].predmetID}));
}

var tableview = Titanium.UI.createTableView({
	scrollable: false,
	borderRadius:3,
	top: 10,
	height: 500			
});

var title;
var details;
var location;
var start;
var end;
var date;
var time;

tableview.addEventListener('click', function(e) {
	title = e.row.children[0].text.substring(9);
	details = e.row.children[1].text + ' ***** ' + e.row.children[2].text + ' ***** ' + e.row.children[3].text;
	//details = details.replace(/:/g, ' -');
	location = e.row.children[6].text.substring(9);
	
	var date = e.row.children[4].text.substring(7);
	var time = e.row.children[5].text.substring(5);
	
	if(time == "")
	{
		start = date.substring(6) + '-' + date.substring(3,5) + '-' + date.substring(0,2) + 'T07:00:00';
		end = date.substring(6) + '-' + date.substring(3,5) + '-' + date.substring(0,2) + 'T16:00:00';
	}
	
	else
	{
		start = date.substring(6) + '-' + date.substring(3,5) + '-' + date.substring(0,2) + 'T' + time + ':00';
		var endTime = parseInt(time.substring(0,2)) + 2 + time.substring(2);
		end = date.substring(6) + '-' + date.substring(3,5) + '-' + date.substring(0,2) + 'T' + endTime + ':00';
	}
	
	alert("Izpitni rok je bil uspešno izbran");
});
				
var client = Ti.Network.createHTTPClient({
    
    	onload: function(e) {
    		    		
			var xml = Titanium.XML.parseString(this.responseText);
        	var izpitniRoki = xml.getElementsByTagName("izpitniRok");
        	
        	for (var i = 0; i < izpitniRoki.length; i++)
			{
				var izpitniRok = izpitniRoki.item(i);
				
				var predmet = izpitniRok.getElementsByTagName("predmet").item(0).text;
				var zavod = izpitniRok.getElementsByTagName("zavod").item(0).text;
				var tip = izpitniRok.getElementsByTagName("tip").item(0).text;
				var komisijski = izpitniRok.getElementsByTagName("komisijski").item(0).text;
				var datum = izpitniRok.getElementsByTagName("cas").item(0).getElementsByTagName("datum").item(0).text;
				var ura = izpitniRok.getElementsByTagName("cas").item(0).getElementsByTagName("ura").item(0).text;
				var prostor = izpitniRok.getElementsByTagName("prostor").item(0).text;
	    		
	    		data.push(makeRow({
	    			predmetLabel:'Predmet: ' + predmet,
					zavodLabel:'Zavod: ' + zavod,
					tipLabel:'Tip: ' + tip,
					komisijskiLabel:'Komisijski: ' + komisijski,
					datumLabel:'Datum: ' + datum,
					uraLabel:'Ura: ' + ura,
					prostorLabel:'Prostor: ' + prostor
	    		}));
			}
			tableview.setData([]);		
    		tableview.setData(data);
    		view.add(tableview);
			data = [];
			view.add(dodaj);
			getToken();
			
			if(isClientOne)
			{				
				view.add(dodajPriljubljene);
			}
	    },
	    
	    onerror: function(e) {
	        // this function is called when an error occurs, including a timeout
	        Ti.API.debug(e.error);
	        alert('error');
	    },
	    
		onreadystatechange: function(e) {
			Ti.API.debug(client.readyState);
		},
		
	    timeout:5000
});

function getToken()
{
	// Login to Google Calendar
	var email = 'tdimkov@gmail.com';
	var password = '***************';
    var xhr = Ti.Network.createHTTPClient();
    xhr.open('GET', "https://www.google.com/accounts/ClientLogin?service=cl&Email=" + email + "&Passwd=" + password);
    
    xhr.onload = function() 
    {
        if(xhr.status == "200") 
        {
            var response = xhr.responseText.split("\n");
            
            for(var i = 0; i < response.length; i++) 
            {
                var tokens = response[i].split("=");
                
                if(tokens[0] == "Auth") 
                {
                    //alert("Uspešna prijava. Token: " + tokens[1]);
                    token = "GoogleLogin auth=" + tokens[1];
                }
            }
        } 
        
        else if(this.status == "403") 
        {
            alert("Napačni podatki za prijavo v google calendar");
        }
        
        else 
        {
            alert("Nepričakovan odgovor od google calendar: " + this.status);
        }
    };    
    xhr.send();
}

function sendCal()
{
	var rowData =  '{"data":{"title":"' + title + '","details":"' + details + '","location":"' + location + '","when" : [{"start":"' + start + '","end":"' + end + '"}]}}';
	
	var loader = Titanium.Network.createHTTPClient();
	loader.open("POST", "https://www.google.com/calendar/feeds/default/private/full");
	loader.setRequestHeader('Authorization', token);
	loader.setRequestHeader('Content-Type', 'application/json; charset=utf-8');
	loader.setRequestHeader("Host", "www.google.com"); 
    loader.setRequestHeader("GData-Version", "2.0"); 
    //loader.setRequestHeader("Content-Length", rowData.length); 
    loader.setRequestHeader("Connection", "close");
    loader.send(rowData);

	loader.onerror = function(e) 
	{
    	alert("ERROR " + e);
    }
    
	loader.onload = function() 
	{
		if(isStartUp == true)
			isStartUp = false;
		
		else
			alert("Izpitni rok je bil uspešno dodan v koledar");
	}
}

var makeRow = function(_params) {
			var row = Ti.UI.createTableViewRow({height: 'auto', layout: 'vertical'});
					
			var predmetLabel = Ti.UI.createLabel({
				text: _params.predmetLabel,
				font: {fontSize:12, fontWeight:'bold'},
				color: 'black',
				top: 5,
				left: 10,
				height:'auto'
			});
			row.add(predmetLabel);
			
			var zavodLabel = Ti.UI.createLabel({
				text: _params.zavodLabel,
				font: {fontSize:12},
				color: 'black',
				top: 5,
				left: 10,
				height:'auto'
			});
			row.add(zavodLabel);
			
			var tipLabel = Ti.UI.createLabel({
				text: _params.tipLabel,
				font: {fontSize:12},
				color: 'black',
				top: 5,
				left: 10,
				height: 'auto'
			});
			row.add(tipLabel);
			
			var komisijskiLabel = Ti.UI.createLabel({
				text: _params.komisijskiLabel,
				font: {fontSize:12},
				color: 'black',
				top: 5,
				left: 10,
				height: 'auto'
			});
			row.add(komisijskiLabel);
			
			var datumLabel = Ti.UI.createLabel({
				text: _params.datumLabel,
				font: {fontSize:12},
				color: 'black',
				top: 5,
				left: 10,
				height: 'auto'
			});
			row.add(datumLabel);
			
			var uraLabel = Ti.UI.createLabel({
				text: _params.uraLabel,
				font: {fontSize:12},
				color: 'black',
				top: 5,
				left: 10,
				height: 'auto'
			});
			row.add(uraLabel);
			
			var prostorLabel = Ti.UI.createLabel({
				text: _params.prostorLabel,
				font: {fontSize:12},
				color: 'black',
				top: 5,
				bottom: 5,
				left: 10,
				height: 'auto'
			});
			row.add(prostorLabel);
			
			return row;
		};